/*************************************************************************
	> File Name: gps.h
	> Author: 
	> Mail: 
	> Created Time: 2018年11月05日 星期一 22时18分43秒
 ************************************************************************/

#ifndef _GPS_H
#define _GPS_H
typedef unsigned int UINT;
typedef int BYTE;
#define EARTH_RADIUS 6371004
#define PI 3.1415926

typedef struct __gprmc__
{
    UINT time;
    char pos_state;
    float latitude;
    float longitude;
    float speed;
    float direction;
    UINT date;
    char dd;
    char mode;
}GPRMC;

//extern int set_serial(int fd,int nSpeed,int nBit,char nEvent,int nStop);
/**
 *函数名：print_gps；
 *函数功能：打印GPS定位信息；
 *函数参数：GPS定位信息数据；
 *函数返回值：空；
 **/
extern void print_gps(GPRMC *gps_data);
/**
 *函数名：gps_analyse;
 *函数功能：分析提取GPS定位数据；
 *函数参数：buff  分析完成后的数据
            gps_data  定位信息；
 *函数返回值：成功返回0、失败返回-1；
 **/
extern int gps_analyse(char *buff,GPRMC *gps_data);
/**
 *函数名：get_latitude;
 *函数功能：提取纬度信息；
 *函数参数：gps_data 定位信息；
 *函数返回值：latitude 纬度信息；
 **/
 extern float get_latitude(GPRMC *gps_data);
/**
 *函数名：get_longitude;
 *函数功能：提取经度信息；
 *函数参数：gps_data 定位信息；
 *函数返回值：longitude 经度信息；
 **/
extern float get_longitude(GPRMC *gps_data);
/**
 *函数名：rad；
 *函数功能：弧度转换；
 *函数参数：d 经纬度；
 *函数返回值： 对应的弧度；
 **/
 float rad(float d);
 /**
  *函数名：getDistance;
  *函数功能：计算两个地点间隔的距离；
  *函数参数：lat1 地点1的纬度；
             lng1 地点1的经度；
             lat2 地点2的纬度；
             lng2 地点2的经度；
  *函数返回值：两地距离（单位：m）；
  **/
float getDistance(float lat1,float lng1,float lat2,float lng2);


void gps_location(GPRMC *gps_data,char * buf);
char *get_GPS();

#endif
